from django.db import models
from django.db.models import JSONField
import json


class UserInfo(models.Model):
    username = models.CharField('用户名', max_length=128)
    password = models.CharField('密码', max_length=128)

    class Meta:
        verbose_name = '用户信息'
        verbose_name_plural = '用户信息'

    def __str__(self):
        return self.username


class Menu(models.Model):
    data = models.TextField(blank=True, null=True)

    def save(self, *args, **kwargs):
        if self.data and isinstance(self.data, dict):
            self.data = json.dumps(self.data, ensure_ascii=False)
        super(Menu, self).save(*args, **kwargs)

    def get_data(self):
        if self.data:
            return json.loads(self.data)
        return {}

class Robot(models.Model):  
    # ID 字段是 Django 自动生成的，通常不需要手动定义  
    # 但如果你需要自定义主键，可以这样做：  
    # id = models.AutoField(primary_key=True)  
  
    # 设备编号  
    device_number = models.CharField(max_length=100, unique=True, verbose_name="设备编号")  
    # 设备名称
    device_name = models.CharField(max_length=100, verbose_name="设备名称", default='AGV')
    # 设备IP  
    device_ip = models.GenericIPAddressField(verbose_name="设备IP")  
      
    # 设备端口  
    device_port = models.IntegerField(verbose_name="设备端口")  
      
    # 通信协议  
    communication_protocol = models.CharField(max_length=50, verbose_name="通信协议")  
      
    # 使用状态，这里假设是一个简单的字符串字段，你可以根据需要扩展为枚举或外键  
    status_connect = models.CharField(max_length=50,default='设备离线',verbose_name="连接状态")  
      
    # 是否在线，布尔字段  
    is_active = models.BooleanField(default=False, verbose_name="是否激活")  
    # 是否在线，布尔字段  
    is_online = models.BooleanField(default=False, verbose_name="是否在线")  
      
    # 设备类型  
    device_type = models.CharField(max_length=100, verbose_name="设备类型")  
  
    # 可以在这里添加更多的字段或方法  
    
    def __str__(self):  
        # 定义模型的字符串表示形式，方便在Django admin中查看  
        return f"设备编号: {self.device_number}, 设备IP: {self.device_ip}"  

    class Meta:  
        # 定义模型的元数据  
        verbose_name = "机器人"  
        verbose_name_plural = "机器人列表"